From: Florian Müllner Date: Thu, 15 Jan 2015 23:32:27 +0000 (+0100) Subject: windowManager: Update active workspace after inserting a new one X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~1897 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=0bfaa5c6a3eadec879afb84a95272fb8b148222c;p=gnome-shell.git windowManager: Update active workspace after inserting a new one New workspaces are inserted by shifting all windows on workspaces below the insertion position down. As a result, when the new workspace is inserted before the active one, we end up with the illusion of a workspace switch. Instead, activate the workspace on which the windows from the active one ended up. https://bugzilla.gnome.org/show_bug.cgi?id=665764 --- diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index b45037630..88acd4592 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -913,6 +913,16 @@ const WindowManager = new Lang.Class({ return; window.change_workspace_by_index(index + 1, true); }); + + // If the new workspace was inserted before the active workspace, + // activate the workspace to which its windows went + let activeIndex = global.screen.get_active_workspace_index(); + if (activeIndex >= pos) { + let newWs = global.screen.get_workspace_by_index(activeIndex + 1); + this._blockAnimations = true; + newWs.activate(global.get_current_time()); + this._blockAnimations = false; + } }, @@ -945,7 +955,7 @@ const WindowManager = new Lang.Class({ }, _shouldAnimate: function() { - return !Main.overview.visible; + return !(Main.overview.visible || this._blockAnimations); }, _shouldAnimateActor: function(actor, types) {